Field
The present application relates generally to database management systems. More specifically, the present application is directed to a token-based database system, and a method of interfacing with the token-based database system.
Brief Discussion of Related Art
A database is a collection of data. Typically, these data are organized according to a schema in order to support retrieval of information. For example, a hierarchical schema organizes the data in hierarchical file structures. As another example, a relational schema organizes the data in table-based data structures. Generally, a database refers to the data structures that store the data and to the data stored in the data structures.
A database management system interacts with one or more other systems to store data in and retrieve data from the database. The database management system conforms to the schema of the database and provides an interface that allows database users to insert, update, delete, and query the data in the database. The interface is typically a database language. For example, a SQL relational database management system provides a SQL database language as an interface to the data in a relational database.
The interface or database language provided by today's database management systems focus on the retrieval of information from the database and only provide weak support for modeling and validating information that is inserted into the database. For example, the SQL database language cannot be used for modeling encapsulated data objects that are automatically validated. The weak modeling and validation capabilities of today's database management systems often lead to inconsistent information in the database, which in turn can lead to erroneous results when the information is retrieved from the database.
While the database management systems can allow storage of executable code in the database (e.g., SQL stored procedures), the database management systems maintain this executable code separately from the data in the database. This represents a problem because the non-unification of the code and the data can result in further inconsistencies in the database, such that code included in the database can fail to execute on the data included in the same database.
In addition, today's databases management systems do not automatically track changes that are made to the data in the database. Many companies would benefit from such change tracking (e.g., for audit purposes), and currently must rely on full backup copies of the database. However, such “blind” copies are not suited for change tracking because it is generally difficult to identify which data have changed between the copies and when and by whom these data changes were requested.
Moreover, present database management systems do not provide an interface to a virtual copy of the database. Many companies would further benefit from such virtual copies for running what-if scenarios. In a what-if scenario a database user wants to test what effect a change of some data in the database has on the other data included in the database. However, with current database management systems all changes are immediately made permanent and are visible to all users. Therefore, companies can only run such what-if scenarios on full physical copies of the database where each copy requires considerable system resources (e.g., memory).
Accordingly, it is desirable to provide a database management system and a method of interfacing with the database that resolve the above-identified limitations, among others.